Kitsu Core
Core JSON:API serialisation and deserialisation components for kitsu
Features
- JSON-API 1.0 compliant
- Automatically links relationships to data
- Works in Node and on the web
- Uses the Promise API
Node / Browser Support
Package | Package Size* | Node | Chrome | Firefox | Safari | Edge | IE |
---|
kitsu-core | 10.1 kb | 6+ | 54+ | 48+ | 10+ | 14+ | |
kitsu-core/legacy | 12 kb | 6+ | 4+ | 3.5+ | 3.2+ | 12+ | 8+ |
kitsu-core/node | 7.4 kb | 6+ | | | | | |
* Including all dependencies, minified & gzipped
Install
Yarn / NPM
yarn add kitsu-core
npm install kitsu-core
import { camel } from 'kitsu-core'
const { camel } = require('kitsu-core')
const { camel } = require('kitsu-core/legacy')
const { camel } = require('kitsu-core/node')
camel(...)
Try it on RunKit
Packd CDN
<script src='https://bundle.run/kitsu-core@5?name=kitsuCore'></script>
<script src='https://bundle.run/kitsu@5/legacy/index.js?name=kitsuCore'></script>
kitsuCore.camel(...)
Try it on CodePen
API
Table of Contents
camel
Converts kebab-case and snake_case into camelCase
Parameters
Examples
Convert kebab-case
camel('hello-world')
Convert snake_case
camel('hello_world')
Returns string camelCase formatted string
deattribute
Hoists attributes to be top-level
Parameters
Examples
Deattribute an array of resources
const data = [
{
id: '1',
type: 'users',
attributes: { slug: 'wopian' }
}
]
const output = await deattribute(data)
Deattribute a resource
const data = {
id: '1',
type: 'users',
attributes: { slug: 'wopian' }
}
const output = await deattribute(data)
Returns (Object | Array) Deattributed resource data
deserialise
Deserialises a JSON-API response
Parameters
Examples
Deserialise with a basic data object
await deserialise({
data: {
id: '1',
attributes: { liked: true }
},
meta: { hello: 'world' }
})
Deserialise with relationships
await deserialise({
data: {
id: '1',
relationships: {
user: {
data: {
type: 'users',
id: '2' }
}
}
},
included: [
{
type: 'users',
id: '2',
attributes: { slug: 'wopian' }
}
]
})
Returns Object The deserialised response
error
Mutates an error and rethrows it
Parameters
filterIncludes
Filters includes for the specific relationship
Parameters
included
Object The response included objectopts
Object
opts.id
string The relationship IDopts.type
string The relationship type
Returns Array The matched includes
kebab
Converts camelCase into kebab-case
Parameters
Examples
kebab('helloWorld')
Returns string kekab-case formatted string
linkRelationships
Links relationships to included data
Parameters
data
Object The response data objectincluded
Object The response included object
query
Constructs a URL query string for JSON:API parameters
Parameters
params
Object Parameters to parseprefix
boolean Prefix returned string with ?
(default false
) (optional, default false
)
Returns string URL query string
serialise
Serialises an object into a JSON-API structure
Parameters
model
string Request modelobj
Object The data (optional, default {}
)method
string Request type (optional, default 'POST'
)
Examples
Due to its usage in kitsu, it MUST be called with this set in 5.0.x
import { serialise, camel, kebab } from 'kitsu-core'
import plural from 'pluralize'
const output = await serialise.apply({ camel, resCase: kebab, plural }, [ model, obj, 'PATCH' ])
Returns Object The serialised data
snake
Converts camelCase into snake_case
Parameters
Examples
snake('helloWorld')
Returns string snake_case formatted string
Contributing
See CONTRIBUTING
Releases
See CHANGELOG
License
All code released under MIT